home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Varsity Update 1998 August
/
SGI Varsity Update 1998 August.iso
/
docs
/
relnotes
/
ftn77_fe
/
ch4.z
/
ch4
Wrap
Text File
|
1998-07-29
|
15KB
|
462 lines
- 1 -
7.2.1 Fortran 77 Front-End Release Notes
- 2 -
DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000007777----1111666655559999----000011110000
4. _N_e_w__F_e_a_t_u_r_e_s__o_f__T_h_i_s__R_e_l_e_a_s_e
This chapter contains the differences between
this release and the 7.2 release of the MIPSpro
Fortran 77 compiler. It also summarizes the
differences between the 7.2 release and the 7.1
release of MIPSpro Fortran 77 compiler.
4.1 _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2_._1
4.1.1 _O_p_e_n_M_P__S_u_p_p_o_r_t MIPSpro Fortran 77 7.2.1
now supports the OpenMP application programming
interface (API) when used in conjunction with
the -_m_p flag. The -_m_p flag enables the
processing of the parallel (MP) directives,
including the original SGI/PCF directives as
well as the OpenMP directives. To selectively
disable one or the other set of directives, add
the following -MP option group flag to the -_m_p
flag:
-MP:old_mp=off
disable processing of the original SGI/PCF
directives, but retain the processing of
OpenMP directives.
-MP:open_mp=off
disable processing of the OpenMP directives,
but retain processing of the original
SGI/PCF directives.
You must have libmp from patchSG0002773
installed if you plan to work with OpenMP
support.
For more information about OpenMP support in
MIPSpro Fortran 77, please refer to the MIPSpro
Fortran 77 Programmer's Guide. For general
information about OpenMP please refer to the
following web page:
http://www.openmp.org/
- 3 -
4.2 _-_O_P_T_:_I_E_E_E___c_o_m_p_a_r_i_s_o_n_s_=_n_o_p_t_i_o_n
The -OPT:IEEE_comparisons=n option has been
renamed to -OPT:IEEE_NaN_inf=n whose definition
under the -OPT option control group is as
follows:
IEEE_NaN_inf=n
IEEE_NaN_inf=ON forces all operations which might have
IEEE-754 NaN or infinity operands to yield results
that conform to ANSI/IEEE 754-1985, the IEEE Standard for
Binary Floating-point Arithmetic, which specifies
standard for NaN and inf operands. Specify ON or OFF for
setting. The default is IEEE_NaN_inf=OFF.
IEEE_NaN_inf=OFF produces non-IEEE results for various
operations. For example, x=x is treated as TRUE without
executing a test, and x/x will be simplified to 1
without dividing. Turning this option on may suppress
many such common optimizations and hurt performance as a
result.
For more information please consult the new man
page opt(5).
4.3 _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2_.
4.3.1 _R_e_p_a_c_k_a_g_i_n_g__o_f__F_r_o_n_t_-_E_n_d__S_u_b_s_y_s_t_e_m_s As
of the 7.2 release, the MIPSpro Fortran 77
front-end subsystems are packaged on their own
separate CD. Before installing the MIPSpro
Fortran 77 Front-end subsystems you must first
install compiler_dev, compiler_eoe, ftn_dev, and
ftn_eoe from the IRIX Development Foundation CD
(On IRIX 6.5 *_eoe subsystems are on the IRIX
Foundation CD).
Should you desire to use the new 7.2.1 Fortran
77 runtime libraries, you must install
patchSG0002759.ftn_dev_sw
patchSG0002759.ftn_eoe_sw (*.sw64 subsystems are
required only for 64-bit operation).
- 4 -
NOTE:
Patch 2759 contains both ftn77_eoe and ftn_eoe
subsystems. One set of these subsystems
is marked as installable (NA) while the other is
marked as not installable (NX).
When installing patch 2759 on the 7.2.1 and 7.2
compiler runtimes containing ftn_eoe,
the ftn77_eoe subsystems are displayed as not
installable (NX).
When installing patch 2759 on earlier compilers
runtimes containing ftn77_eoe,
the ftn_eoe subsystems are displayed as not
installable (NX).
4.3.2 _O_p_t_i_o_n__t_o__u_s_e__F_o_r_t_r_a_n__9_0__l_i_b_r_a_r_y The
-_c_r_a_y_l_i_b_s option allows you to use the Fortran
90 library, libfortran.so, (based on the Cray
FFIO library) to link your program. Using this
option requires installation of Patch 2759
(available on the IRIX Development Foundation
CD's). Note that only standard Fortran 77 I/O
operations are supported in this release. If
you use any SGI Fortran 77 extensions
(particularly ISAM and variable formats) you
cannot use the -_c_r_a_y_l_i_b_s option.
4.3.3 _N_e_w__O_p_t_i_o_n_s__a_n_d__D_e_f_a_u_l_t_s A new
-_D_E_B_U_G:_o_p_t_i_o_n control group has been created to
allow insertion of code to assist in the
debugging of programs. For example,
-_D_E_B_U_G:_d_i_v__c_h_e_c_k=_N replaces -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
and the 7.2.1 compiler, by default, inserts code
to check for divide by zero (N=1).
_N_O_T_E: The default value for -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
under MIPSpro 7.1 was N=0 (no checks).
For more information, please refer to the _f_7_7(1)
and _D_E_B_U_G__g_r_o_u_p(5) man pages.
The -_L_I_S_T: options control group has been
enhanced to the create a listing file (.l) that
contains the values of all flags modified,
- 5 -
directly in the command line, or indirectly as a
side effect of other options. For example:
% f77 -n32 -LIST:options=ON foo.f
will create foo.l which contains a listing that
contains the default values of certain options
from the -OPT, -LNO, -TARG and -TENV option
control groups.
The following command:
% f77 -n32 -LIST:all_options=ON foo.f
will create foo.l which contains a listing that
contains the default values of all options from
all of the option control groups.
For more information, please refer to the _f_7_7(1)
man page.
4.3.4 _O_b_s_o_l_e_t_e__O_p_t_i_o_n_s Several compile-time
flags have been obsoleted. These include:
-_T_E_N_V:_m_i_s_a_l_i_g_n_e_m_n_t=_N, -_T_E_N_V:_a_l_i_g_n__e_x_t_e_r_n=_N and
-_T_E_N_V:_a_l_i_g_n_e_d=_T_R_U_E. Their use will generate a
warning message in both the compiler front-end
and backend. For example:
% f77 -n32 -TENV:misalignment=3 reshape.f
Warning: Obsolete option "-TENV:misalignment=3" -- ignored
Warning: Obsolete option "-TENV:misalignment=3" -- ignored
The -_T_E_N_V:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E flag has been
replaced by -_D_E_B_U_G:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E.
For more information, please refer to the _f_7_7(1)
and _D_E_B_U_G__g_r_o_u_p(5) man pages.
4.3.5 _F_i_l_l__a_n_d__A_l_i_g_n__D_i_r_e_c_t_i_v_e__S_u_p_p_o_r_t
MIPSpro 7.2.1 Fortran 77 supports new types of
directives to facilitate padding and alignment
of variables within cachelines and pages of
memory. They are outlined below.
- 6 -
c*$* fill_symbol (s, L1cacheline)
c*$* fill_symbol (s, L2cacheline)
c*$* fill_symbol (s, page)
c*$* fill_symbol (s, <user-specified-power-of-two>)
c*$* align_symbol (s, L1cacheline)
c*$* align_symbol (s, L2cacheline)
c*$* align_symbol (s, page)
c*$* align_symbol (s, <user-specified-power-of-two>)
The fill_symbol and align_symbol directives take
a symbol (i.e. a variable that may be a Fortran
COMMON, or an automatic variable, but not a
formal and not an element of a structured type
like a struct or an array). The second argument
in the directive may be one of the keywords
L1cacheline (machine specific first-level cache
line size, typically 32 bytes), L2cacheline
(machine specific second-level cache line size,
typically 128 bytes), page (machine specific
page size, typically 16 Kbytes), or a user-
specified power-of-two value.
The align_symbol directive aligns the start of
the named symbol at the specified alignment,
i.e. the symbol "s" will start at the specified
alignment boundary.
The fill_symbol directive pads the named symbol
with additional storage so that the symbol is
assured not to overlap with any other data item
within the storage of the specified size. The
additional padding required is heuristically
divided between each end of the specified
variable. For instance, a fill_symbol directive
for the L1cacheline will guarantee that the
specified symbol will not suffer from false-
sharing for the L1 cache line.
For global variables these directives must be
specified at the variable definition, and are
optional at the declarations of the variable.
For COMMON block variables these directives are
required at each declaration of the COMMON
block. Since the directives modify the allocated
storage and its alignment for the named symbol,
inconsistent directive can lead to undefined
results.
The align_symbol directive is ineffective for
- 7 -
local variables of fixed-size symbols, such as
simple scalars or arrays of known size. The
directive continues to be effective for stack-
allocated arrays of dynamically-determined size.
A variable cannot have both fill_symbol and
align_symbol directives applied to it.
4.3.6 _N_e_w _A_u_t_o_m_a_t_i_c _P_a_r_a_l_l_e_l_i_z_a_t_i_o_n _O_p_t_i_o_n
_P_r_o_d_u_c_t The 7.2 release of the MIPSpro
compilers marks a major revision of the auto-
parallelizer. The new product incorporates
automatic parallelization into the other
optimizations performed by the MIPSpro
compilers. Previous versions relied on
preprocessors to provide source-to-source
conversions prior to compilation. This change
provides several benefits to developers:
Automatic parallelization is integrated with
optimizations for single processors.
A set of options and pragmas consistent with the
rest of the MIPSpro compilers.
Better run-time and compile-time performance.
For more information, please refer to the
auto_p(5) man pages.
NOTE: In order to run the new automatic
parallelization, you must purchase the MIPSpro
Auto Parallelization Option (SC4-APO-7.2.1) and
install the license for it (FEATURE name string
= auto_pp).